A regular memory generates a registered data stored at that address for a given address or index. On the other hand, a CAM (Content Addressable Memory) generates an address of the CAM that stores it for a given search data or an input data (see Non-patent Documents 1 and 2).
The CAM is used in a wide range of fields including a pattern matching, an internet router, a cache of a processor, a TLB (Translation Lookaside Buffer), a data compression, an accelerator of a database, a neural network, and a memory patch.
Normally, the CAM is classified into two types according to functions, such as a Binary CAM (hereinafter, referred to as a “BCAM”) and a Ternary CAM (hereinafter, referred to as a “TCAM”). The BCAM stores 0 and 1 in each cell. The TCAM stores 0, 1, and * in each cell. Here, the * represents a “do not care” and matches both the 0 and the 1.
Although, the function of the CAM may be realized by software, the function realized by the software is significantly slow. Therefore, the CAM is often realized by using a dedicated hardware.